퍼사드 패턴은 클라이언트가 사용해야 하는 복잡한 서브 시스템 의존성을 간단한 인터페이스로 추상화 하는 디자인 패턴이다. Client는 서브시스템의 존재를 모르는 상태로, 오직 facade클래스에만 접근할 수 있도록 하는것이 특징이다.
public class PizzaFacade {
private final Chef chef = new Chef();
private final Oven oven = new Oven();
public Pizza makingPizza() {
Pizza pizza = chef.makingDough();
pizza = chef.addToppings(pizza);
return oven.grillingPizza(pizza);
}
}
@NoArgsConstructor
public class Pizza {
}
@NoArgsConstructor
public class Oven {
public Pizza grillingPizza(Pizza pizza) {
return pizza;
}
}
@NoArgsConstructor
public class Chef {
public Pizza makingDough() {
return new Pizza();
}
public Pizza addToppings(Pizza pizza) {
return pizza;
}
}
여러 클래스에 접근해서 로직을 실행하는 책임을 PizzaFacade 클래스에 몰아넣었다.
public class App {
public static void main(String[] args) {
PizzaFacade pizzaFacade = new PizzaFacade();
Pizza pizza = pizzaFacade.makingPizza();
System.out.println(pizza);
}
}
클라이언트에선 pizzaFacade.makingPizza()를 호출하면 간단하게 피자를 만들 수 있다.
이 링크로 가면 코드를 볼 수 있다.